{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "logistic_regression_using_keras_API.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "id": "dSwpGifpB7W9"
      },
      "outputs": [],
      "source": [
        "import tensorflow as tf\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import pandas as pd\n",
        "import tensorflow.keras as K\n",
        "from tensorflow.keras.layers import Dense, Flatten\n"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "((train_data, train_labels),(test_data, test_labels)) = tf.keras.datasets.mnist.load_data()"
      ],
      "metadata": {
        "id": "euKMdCXiPlRb"
      },
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "train_data = train_data/np.float32(255)\n",
        "train_labels = train_labels.astype(np.int32)  \n",
        "test_data = test_data/np.float32(255)\n",
        "test_labels = test_labels.astype(np.int32)\n"
      ],
      "metadata": {
        "id": "ob7uUyU4h5B_"
      },
      "execution_count": 3,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "train_labels"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "oZFA48Y05bif",
        "outputId": "440bb1e4-b93f-4d51-f254-bb14a89829d5"
      },
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([5, 0, 4, ..., 5, 6, 8], dtype=int32)"
            ]
          },
          "metadata": {},
          "execution_count": 4
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "model = K.Sequential([\n",
        "                      # Dense(64,  activation='relu'),\n",
        "                      # Dense(32,  activation='relu'),\n",
        "                      Flatten(input_shape=(28, 28)),\n",
        "                      Dense(10, activation='sigmoid')\n",
        "])\n",
        "model.summary()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "vfy1amXuCHBD",
        "outputId": "0d5257b6-10de-4c37-d1e9-89e360f25020"
      },
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " flatten (Flatten)           (None, 784)               0         \n",
            "                                                                 \n",
            " dense (Dense)               (None, 10)                7850      \n",
            "                                                                 \n",
            "=================================================================\n",
            "Total params: 7,850\n",
            "Trainable params: 7,850\n",
            "Non-trainable params: 0\n",
            "_________________________________________________________________\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "model.compile(optimizer='adam',\n",
        "              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n",
        "              metrics=['accuracy'])\n"
      ],
      "metadata": {
        "id": "lPF_CS2qCNjI"
      },
      "execution_count": 6,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "history = model.fit(x=train_data,y=train_labels, epochs=50, verbose=1, validation_split=0.2)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "AFVBcartVIrg",
        "outputId": "f689839c-eefe-48f1-a2a4-e699cf9bec26"
      },
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/50\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:1096: UserWarning: \"`sparse_categorical_crossentropy` received `from_logits=True`, but the `output` argument was produced by a sigmoid or softmax activation and thus does not represent logits. Was this intended?\"\n",
            "  return dispatch_target(*args, **kwargs)\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.5146 - accuracy: 0.8656 - val_loss: 0.3221 - val_accuracy: 0.9124\n",
            "Epoch 2/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.3173 - accuracy: 0.9121 - val_loss: 0.2860 - val_accuracy: 0.9215\n",
            "Epoch 3/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2941 - accuracy: 0.9180 - val_loss: 0.2745 - val_accuracy: 0.9238\n",
            "Epoch 4/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2813 - accuracy: 0.9216 - val_loss: 0.2712 - val_accuracy: 0.9252\n",
            "Epoch 5/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2736 - accuracy: 0.9228 - val_loss: 0.2683 - val_accuracy: 0.9251\n",
            "Epoch 6/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2682 - accuracy: 0.9253 - val_loss: 0.2674 - val_accuracy: 0.9274\n",
            "Epoch 7/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2643 - accuracy: 0.9260 - val_loss: 0.2686 - val_accuracy: 0.9266\n",
            "Epoch 8/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2608 - accuracy: 0.9274 - val_loss: 0.2666 - val_accuracy: 0.9256\n",
            "Epoch 9/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2573 - accuracy: 0.9281 - val_loss: 0.2631 - val_accuracy: 0.9277\n",
            "Epoch 10/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2552 - accuracy: 0.9284 - val_loss: 0.2603 - val_accuracy: 0.9310\n",
            "Epoch 11/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2528 - accuracy: 0.9298 - val_loss: 0.2689 - val_accuracy: 0.9258\n",
            "Epoch 12/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2512 - accuracy: 0.9299 - val_loss: 0.2627 - val_accuracy: 0.9285\n",
            "Epoch 13/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2497 - accuracy: 0.9305 - val_loss: 0.2627 - val_accuracy: 0.9283\n",
            "Epoch 14/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2483 - accuracy: 0.9312 - val_loss: 0.2617 - val_accuracy: 0.9306\n",
            "Epoch 15/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2472 - accuracy: 0.9314 - val_loss: 0.2600 - val_accuracy: 0.9308\n",
            "Epoch 16/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2457 - accuracy: 0.9318 - val_loss: 0.2624 - val_accuracy: 0.9297\n",
            "Epoch 17/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2447 - accuracy: 0.9317 - val_loss: 0.2626 - val_accuracy: 0.9284\n",
            "Epoch 18/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2431 - accuracy: 0.9326 - val_loss: 0.2633 - val_accuracy: 0.9293\n",
            "Epoch 19/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2426 - accuracy: 0.9339 - val_loss: 0.2626 - val_accuracy: 0.9303\n",
            "Epoch 20/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2415 - accuracy: 0.9327 - val_loss: 0.2592 - val_accuracy: 0.9316\n",
            "Epoch 21/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2405 - accuracy: 0.9331 - val_loss: 0.2671 - val_accuracy: 0.9290\n",
            "Epoch 22/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2396 - accuracy: 0.9326 - val_loss: 0.2659 - val_accuracy: 0.9287\n",
            "Epoch 23/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2389 - accuracy: 0.9340 - val_loss: 0.2640 - val_accuracy: 0.9296\n",
            "Epoch 24/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2383 - accuracy: 0.9340 - val_loss: 0.2658 - val_accuracy: 0.9290\n",
            "Epoch 25/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2375 - accuracy: 0.9344 - val_loss: 0.2648 - val_accuracy: 0.9300\n",
            "Epoch 26/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2369 - accuracy: 0.9344 - val_loss: 0.2638 - val_accuracy: 0.9308\n",
            "Epoch 27/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2363 - accuracy: 0.9340 - val_loss: 0.2657 - val_accuracy: 0.9302\n",
            "Epoch 28/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2360 - accuracy: 0.9348 - val_loss: 0.2644 - val_accuracy: 0.9303\n",
            "Epoch 29/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2349 - accuracy: 0.9349 - val_loss: 0.2666 - val_accuracy: 0.9289\n",
            "Epoch 30/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2346 - accuracy: 0.9345 - val_loss: 0.2631 - val_accuracy: 0.9312\n",
            "Epoch 31/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2341 - accuracy: 0.9351 - val_loss: 0.2692 - val_accuracy: 0.9295\n",
            "Epoch 32/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2337 - accuracy: 0.9356 - val_loss: 0.2675 - val_accuracy: 0.9302\n",
            "Epoch 33/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2338 - accuracy: 0.9353 - val_loss: 0.2685 - val_accuracy: 0.9283\n",
            "Epoch 34/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2326 - accuracy: 0.9351 - val_loss: 0.2675 - val_accuracy: 0.9304\n",
            "Epoch 35/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2323 - accuracy: 0.9353 - val_loss: 0.2674 - val_accuracy: 0.9286\n",
            "Epoch 36/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2314 - accuracy: 0.9357 - val_loss: 0.2693 - val_accuracy: 0.9296\n",
            "Epoch 37/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2316 - accuracy: 0.9355 - val_loss: 0.2680 - val_accuracy: 0.9298\n",
            "Epoch 38/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2309 - accuracy: 0.9360 - val_loss: 0.2698 - val_accuracy: 0.9285\n",
            "Epoch 39/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2307 - accuracy: 0.9356 - val_loss: 0.2700 - val_accuracy: 0.9287\n",
            "Epoch 40/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2299 - accuracy: 0.9354 - val_loss: 0.2689 - val_accuracy: 0.9286\n",
            "Epoch 41/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2298 - accuracy: 0.9354 - val_loss: 0.2706 - val_accuracy: 0.9288\n",
            "Epoch 42/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2297 - accuracy: 0.9367 - val_loss: 0.2696 - val_accuracy: 0.9302\n",
            "Epoch 43/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2288 - accuracy: 0.9359 - val_loss: 0.2744 - val_accuracy: 0.9292\n",
            "Epoch 44/50\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2289 - accuracy: 0.9362 - val_loss: 0.2723 - val_accuracy: 0.9290\n",
            "Epoch 45/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2287 - accuracy: 0.9363 - val_loss: 0.2711 - val_accuracy: 0.9297\n",
            "Epoch 46/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2282 - accuracy: 0.9363 - val_loss: 0.2743 - val_accuracy: 0.9277\n",
            "Epoch 47/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2281 - accuracy: 0.9367 - val_loss: 0.2726 - val_accuracy: 0.9283\n",
            "Epoch 48/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2277 - accuracy: 0.9359 - val_loss: 0.2745 - val_accuracy: 0.9283\n",
            "Epoch 49/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2275 - accuracy: 0.9365 - val_loss: 0.2748 - val_accuracy: 0.9273\n",
            "Epoch 50/50\n",
            "1500/1500 [==============================] - 4s 3ms/step - loss: 0.2275 - accuracy: 0.9361 - val_loss: 0.2750 - val_accuracy: 0.9285\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "plt.plot(history.history['loss'], label='loss')\n",
        "plt.plot(history.history['val_loss'], label='val_loss')\n",
        "plt.xlabel('Epoch')\n",
        "plt.ylabel('Loss')\n",
        "plt.legend()\n",
        "plt.grid(True)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        },
        "id": "2CNB_RPafiEZ",
        "outputId": "8e253635-074e-479c-effd-592f269206de"
      },
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "id": "Gl91RPhdCaXI"
      },
      "outputs": [],
      "source": [
        "predictions = model.predict(test_data)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {
        "id": "DvYmmrpIy6Y1"
      },
      "outputs": [],
      "source": [
        "def plot_image(i, predictions_array, true_label, img):\n",
        "  true_label, img = true_label[i], img[i]\n",
        "  plt.grid(False)\n",
        "  plt.xticks([])\n",
        "  plt.yticks([])\n",
        "\n",
        "  plt.imshow(img, cmap=plt.cm.binary)\n",
        "\n",
        "  predicted_label = np.argmax(predictions_array)\n",
        "  if predicted_label == true_label:\n",
        "    color = 'blue'\n",
        "  else:\n",
        "    color = 'red'\n",
        "\n",
        "  plt.xlabel(\"Pred {} Conf: {:2.0f}% True ({})\".format(predicted_label,\n",
        "                                100*np.max(predictions_array),\n",
        "                                true_label),\n",
        "                                color=color)\n",
        "\n",
        "def plot_value_array(i, predictions_array, true_label):\n",
        "  true_label = true_label[i]\n",
        "  plt.grid(False)\n",
        "  plt.xticks(range(10))\n",
        "  plt.yticks([])\n",
        "  thisplot = plt.bar(range(10), predictions_array, color=\"#777777\")\n",
        "  plt.ylim([0, 1])\n",
        "  predicted_label = np.argmax(predictions_array)\n",
        "\n",
        "  thisplot[predicted_label].set_color('red')\n",
        "  thisplot[true_label].set_color('blue')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "metadata": {
        "id": "HV5jw-5HwSmO",
        "outputId": "aaf10577-82bd-41b9-920b-eacad2b139b6",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 320
        }
      },
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 720x360 with 2 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ],
      "source": [
        "i = 56\n",
        "plt.figure(figsize=(10,5))\n",
        "plt.subplot(1,2,1)\n",
        "plot_image(i, predictions[i], test_labels, test_data)\n",
        "plt.subplot(1,2,2)\n",
        "plot_value_array(i, predictions[i],  test_labels)\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "better_model = K.Sequential([\n",
        "                      Flatten(input_shape=(28, 28)),\n",
        "                      Dense(128,  activation='relu'),\n",
        "                      #Dense(64,  activation='relu'),\n",
        "                      Dense(10, activation='softmax')\n",
        "])\n",
        "better_model.summary()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "PpOZuTf4ObLY",
        "outputId": "315ed7e6-66fd-4ab4-9120-1bb4fb913670"
      },
      "execution_count": 16,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_2\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " flatten_2 (Flatten)         (None, 784)               0         \n",
            "                                                                 \n",
            " dense_3 (Dense)             (None, 128)               100480    \n",
            "                                                                 \n",
            " dense_4 (Dense)             (None, 10)                1290      \n",
            "                                                                 \n",
            "=================================================================\n",
            "Total params: 101,770\n",
            "Trainable params: 101,770\n",
            "Non-trainable params: 0\n",
            "_________________________________________________________________\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "better_model.compile(optimizer='adam',\n",
        "              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n",
        "              metrics=['accuracy'])"
      ],
      "metadata": {
        "id": "Nq8VNhalOo48"
      },
      "execution_count": 17,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "history = better_model.fit(x=train_data,y=train_labels, epochs=10, verbose=1, validation_split=0.2)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "IUaHtrwxOu-Q",
        "outputId": "2ca97161-2fda-4a83-c4d5-6b5617907a5d"
      },
      "execution_count": 18,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/10\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:1096: UserWarning: \"`sparse_categorical_crossentropy` received `from_logits=True`, but the `output` argument was produced by a sigmoid or softmax activation and thus does not represent logits. Was this intended?\"\n",
            "  return dispatch_target(*args, **kwargs)\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2869 - accuracy: 0.9181 - val_loss: 0.1477 - val_accuracy: 0.9579\n",
            "Epoch 2/10\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.1264 - accuracy: 0.9629 - val_loss: 0.1152 - val_accuracy: 0.9656\n",
            "Epoch 3/10\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.0875 - accuracy: 0.9735 - val_loss: 0.0952 - val_accuracy: 0.9706\n",
            "Epoch 4/10\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.0643 - accuracy: 0.9805 - val_loss: 0.0931 - val_accuracy: 0.9708\n",
            "Epoch 5/10\n",
            "1500/1500 [==============================] - 5s 4ms/step - loss: 0.0488 - accuracy: 0.9853 - val_loss: 0.0937 - val_accuracy: 0.9724\n",
            "Epoch 6/10\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.0377 - accuracy: 0.9886 - val_loss: 0.0924 - val_accuracy: 0.9724\n",
            "Epoch 7/10\n",
            "1500/1500 [==============================] - 5s 4ms/step - loss: 0.0302 - accuracy: 0.9906 - val_loss: 0.1089 - val_accuracy: 0.9701\n",
            "Epoch 8/10\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.0250 - accuracy: 0.9923 - val_loss: 0.1040 - val_accuracy: 0.9732\n",
            "Epoch 9/10\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.0203 - accuracy: 0.9937 - val_loss: 0.0971 - val_accuracy: 0.9754\n",
            "Epoch 10/10\n",
            "1500/1500 [==============================] - 5s 3ms/step - loss: 0.0155 - accuracy: 0.9956 - val_loss: 0.1058 - val_accuracy: 0.9735\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "plt.plot(history.history['loss'], label='loss')\n",
        "plt.plot(history.history['val_loss'], label='val_loss')\n",
        "plt.xlabel('Epoch')\n",
        "plt.ylabel('Loss')\n",
        "plt.legend()\n",
        "plt.grid(True)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 283
        },
        "id": "DlynNznqO1Jp",
        "outputId": "cae41c9a-c793-4a39-f2c0-16b61e306894"
      },
      "execution_count": 19,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "predictions = better_model.predict(test_data)\n",
        "i = 0\n",
        "plt.figure(figsize=(10,5))\n",
        "plt.subplot(1,2,1)\n",
        "plot_image(i, predictions[i], test_labels, test_data)\n",
        "plt.subplot(1,2,2)\n",
        "plot_value_array(i, predictions[i],  test_labels)\n",
        "plt.show()"
      ],
      "metadata": {
        "id": "iGlvW03oPAQY",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 320
        },
        "outputId": "ee3df42e-9964-47fa-d73e-c2aa77fab28a"
      },
      "execution_count": 20,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 720x360 with 2 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        ""
      ],
      "metadata": {
        "id": "wVvQPrFwWfrs"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}